import java.util.*;
import java.io.*;


public class day4 {
    /**
     * NC6 二叉树中的最大路径和
     * https://www.nowcoder.com/practice/da785ea0f64b442488c125b441a4ba4a?tpId=196&tqId=37050&ru=/exam/oj
     */
    public class TreeNode {
        int val = 0;
        TreeNode left = null;
        TreeNode right = null;
        public TreeNode(int val) {
            this.val = val;
        }
    }
    public static int ret1 = -1001;
    public int maxPathSum (TreeNode root) {
        dfs(root);
        return ret1;
    }

    public static int dfs(TreeNode root) {
        if(root == null) {
            return 0;
        }
        // 树形dp：左子树给我什么，右子树给我什么，在我这里整合什么，我返回什么。这四步
        // 后序遍历的思想，左子树返回一个值，右子树返回一个值，在root中进行整合，之后往上进行返回最大的节点
        int l = Math.max(0,dfs(root.left)); // 左子树为根的最大单链和
        int r = Math.max(0,dfs(root.right)); // 右子树为根的最大单链和
        // 更新结果
        ret1 = Math.max(ret1,root.val + l + r);

        return root.val + Math.max(l,r); // 返回以root为根的最大单链和
    }



    /**
     * 体操队形
     * https://ac.nowcoder.com/acm/problem/229386
     */
    public static int N = 11;
    public static int n;
    public static int ret;
    public static int[] arr = new int[N];
    public static boolean[] visit = new boolean[N];

    public static void main2(String[] args) {
        Scanner in = new Scanner(System.in);
        n = in.nextInt();
        for(int i = 1;i <= n;i++) {
            arr[i] = in.nextInt();
        }

        dfs(1);

        System.out.println(ret);
    }

    public static void dfs(int pos) {
        if(pos == n + 1) {
            // 判断的长度够了就是排好了，直接返回在加完之后
            ret++;
            return;
        }

        // 对每个位置进行操作
        for(int i = 1;i <= n;i++) {
            if(visit[i] == true) {
                // 这个 i 这个队员已经用过了，直接跳过
                continue;
            }
            if(visit[arr[i]]  == true) {
                // 说明 对应的条件值在前面已经用过了，那么这个位置及之后均不会满足这个条件
                return;
            }
            // 那么这个位置就是可以进行放值
            visit[i] = true;
            dfs(pos + 1);
            visit[i] = false; // 剪枝
        }

    }



    /**
     * 游游的重组偶数
     * https://www.nowcoder.com/questionTerminal/d1ac7f15d5dc40b39a7d6cb11a01407e
     */
    private static PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));
    private static Read in = new Read();

    public static void main1(String[] args) throws IOException {
        int q = in.nextInt();
        // 判断最后一位的数是否是偶数即可
        while(q-- != 0) {
            // 把输入的正整数使用char[] 数组进行存储，方便于操作
            char[] str = in.next().toCharArray();
            int n = str.length;
            for(int i = n - 1;i >= 0;i--) {
                // 从后往前找第一个为偶数的值和最后一位进行交换，本身和本身交换是没有问题的
                if((str[i] - '0') % 2 == 0) {
                    swap(str,i,n - 1);
                    break;
                    // 直接跳出
                }
            }
            // 当遍历一遍之后，对其最后一位进行判断是否是偶数
            if((str[n - 1] - '0') % 2 == 0) {
                out.println(new String(str));
            }else {
                out.println(-1);
            }
        }
        out.close();
    }

    public static void swap(char[] str,int start,int end) {
        char tmp = str[end];
        str[end] = str[start];
        str[start] = tmp;
    }
}

class Read {
    StringTokenizer st = new StringTokenizer("");
    BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
    String next() throws IOException {
        while(!st.hasMoreTokens()) {
            st = new StringTokenizer(bf.readLine());
        }
        return st.nextToken();
    }
    String nextLine() throws IOException {
        return bf.readLine();
    }
    int nextInt() throws IOException {
        return Integer.parseInt(next());
    }
    long nextLong() throws IOException {
        return Long.parseLong(next());
    }
    double nextDouble() throws IOException {
        return Double.parseDouble(next());
    }
}

